home *** CD-ROM | disk | FTP | other *** search
/ IRIX 6.2 Applications 1996 May / SGI IRIX 6.2 Applications 1996 May.iso / dist / impr_dev.idb / usr / include / pod.h.z / pod.h
C/C++ Source or Header  |  1996-05-06  |  20KB  |  550 lines

  1. /**************************************************************************
  2.  *                                      *
  3.  *           Copyright (c)    1992 Silicon Graphics, Inc.          *
  4.  *            All Rights Reserved                    *
  5.  *                                      *
  6.  *       THIS    IS UNPUBLISHED PROPRIETARY SOURCE CODE OF SGI          *
  7.  *                                      *
  8.  * The copyright notice above does not evidence any actual of intended      *
  9.  * publication of such source code, and is an unpublished work by Silicon *
  10.  * Graphics, Inc. This material contains CONFIDENTIAL INFORMATION that is *
  11.  * the property of Silicon Graphics, Inc. Any use, duplication or      *
  12.  * disclosure not specifically authorized by Silicon Graphics is strictly *
  13.  * prohibited.                                  *
  14.  *                                      *
  15.  * RESTRICTED RIGHTS LEGEND:                          *
  16.  *                                      *
  17.  * Use, duplication or disclosure by the Government is subject to      *
  18.  * restrictions as set forth in subdivision (c)(1)(ii) of the Rights in      *
  19.  * Technical Data and Computer Software clause at DFARS 52.227-7013,      *
  20.  * and/or in similar or successor clauses in the FAR, DOD or NASA FAR      *
  21.  * Supplement. Unpublished - rights reserved under the Copyright Laws of  *
  22.  * the United States. Contractor is SILICON GRAPHICS, INC., 2011 N.      *
  23.  * Shoreline Blvd., Mountain View, CA 94039-7311              *
  24.  **************************************************************************
  25.  *
  26.  * File: pod.h
  27.  *
  28.  * Description: Primary include file for libpod, the printer object
  29.  *    database API library. This file contains the declarations and
  30.  *    information required by application programs and should be
  31.  *    included by any program that references functions in libpod.
  32.  *
  33.  **************************************************************************/
  34.  
  35.  
  36. #ident "$Revision: 1.10 $"
  37.  
  38.  
  39. #ifndef    _PD_POD_H
  40. #define    _PD_POD_H
  41.  
  42.  
  43. #include <sys/types.h>
  44.  
  45.  
  46. /* File naming and location information */
  47.  
  48. #define PD_DEF_POD_PATH        "/usr/spool/lp/pod"
  49. #define PD_CONFIG_SUFFIX    ".config"
  50. #define PD_STATUS_SUFFIX    ".status"
  51. #define PD_LOG_SUFFIX        ".log"
  52.  
  53. /* Landscape page size name suffix */
  54.  
  55. #define PD_SIZE_NAME_SUFFIX    "_land"
  56.  
  57.  
  58. /* Network parameters */
  59.  
  60. #define PD_DEF_NET_TIMEOUT    60    /* Default network communications */
  61.                     /*    timeout period in seconds */
  62.  
  63.  
  64. /* General information */
  65.  
  66. #define PD_STR_MAX        128
  67. #define PD_MESSAGE_MAX        5
  68. #define PD_LOG_ALL        0
  69.  
  70.  
  71. /* Operational status states (PDStatusStruct: operational_status field) */
  72.  
  73. #define PD_STATUS_IDLE        0
  74. #define PD_STATUS_BUSY        1
  75. #define PD_STATUS_FAULTED    2
  76. #define PD_STATUS_UNAVAILABLE    3
  77.  
  78. /* Raster orientation bits (PDSizeTableStruct: raster_definition field) */
  79.  
  80. #define PD_RASTER_R_TO_L    0x01
  81. #define PD_RASTER_B_TO_T    0x02
  82. #define PD_RASTER_LONG        0x04
  83.  
  84. /* Variable page size bits (PDSizeTableStruct: variable_page_size field) */
  85.  
  86. #define PD_PAGE_VAR_WIDTH    0x01
  87. #define PD_PAGE_VAR_HEIGHT    0x02
  88.  
  89. /* Media types (PDStatusStruct: media_type field) */
  90.  
  91. #define PD_MEDIA_PAPER        0
  92. #define PD_MEDIA_TRANSPARENCY    1
  93. #define PD_MEDIA_OTHER        2
  94. #define PD_MEDIA_UNKNOWN    3
  95.  
  96. /* Data description code (PDStatusStruct: number_of_colors field) */
  97.  
  98. /*    Masks */
  99.  
  100. #define PD_DATA_NUMCOLORS_MASK    0x000000FF
  101. #define PD_DATA_COLORSPACE_MASK    0x0000FFFF
  102. #define PD_DATA_DEPTH_MASK    0x00FF0000
  103. #define PD_DATA_FORMAT_MASK    0xFF000000
  104.  
  105. /*    Colorspaces */
  106.  
  107. #define PD_DATA_K        0x00000001
  108. #define PD_DATA_CMY        0x00000003
  109. #define PD_DATA_CMYK        0x00000004
  110. #define PD_DATA_W        0x00000101
  111. #define PD_DATA_RGB        0x00000103
  112. #define PD_DATA_YMC        0x00000203
  113. #define PD_DATA_YMCK        0x00000204
  114. #define PD_DATA_KCMY        0x00000304
  115.  
  116. /*    Depths */
  117.  
  118. #define PD_DATA_DEPTH1        0x00000000    /* 1 bit per pixel */
  119. #define PD_DATA_DEPTH4        0x00040000    /* 4 bit per pixel */
  120. #define PD_DATA_DEPTH8        0x00080000    /* 8 bit per pixel */
  121.  
  122. /*    Formats */
  123.  
  124. #define PD_DATA_CHUNKY        0x00000000
  125. #define PD_DATA_BANDED        0x02000000
  126. #define PD_DATA_PLANAR        0x04000000
  127.  
  128. /*    Macros */
  129.  
  130. #define PD_GET_NUMCOLORS(c)        ((c) & PD_DATA_NUMCOLORS_MASK)
  131. #define PD_GET_COLORSPACE_CODE(c)    ((c) & PD_DATA_COLORSPACE_MASK)
  132. #define PD_GET_DEPTH_CODE(c)        ((c) & PD_DATA_DEPTH_MASK)
  133. #define PD_GET_FORMAT_CODE(c)        ((c) & PD_DATA_FORMAT_MASK)
  134.  
  135. /* Media standard (PDInfoStruct: media_standard field) */
  136.  
  137. #define PD_STANDARD_AMERICAN    0
  138. #define PD_STANDARD_METRIC    1
  139.  
  140. /* Media size definitions (PDStatusStruct: media_size field) */
  141. /*    The media size codes are encoded as follows:
  142.  
  143.         7   (MSB)      Orientation: 0 = Portrait, 1 = Landscape
  144.         6              Standard:    0 = American, 1 = Metric
  145.         5-0 (LSB)      Size Code
  146.  
  147.     Bits 8-31 are used by the PD_SIZE_CURRENT code.
  148.  
  149.     Media size names are obtained simply by removing the 'PD_SIZE'
  150.     prefix from the size code token. For example, the page name
  151.     corresponding to PD_SIZE_A_LAND is 'A_LAND'. Note that those
  152.     size codes that are synonyms for other page size codes do not
  153.     have a recognized page name. For these codes use the real code
  154.     as the basis for the page name.
  155. */
  156.  
  157. /*    Special codes */
  158.  
  159. #define PD_SIZE_METRIC        0x00000040
  160. #define PD_SIZE_LANDSCAPE    0x00000080
  161. #define PD_SIZE_VARIABLE    0x0000003F
  162. #define PD_SIZE_CURRENT        0xFFFFFFFF
  163.  
  164. /*    Standard American - portrait */
  165.  
  166. #define PD_SIZE_MONARCH        0x00000020    /*  3.87 X  7.50 in. */
  167. #define PD_SIZE_COM10        0x00000030    /*  4.12 X  9.50 in. */
  168. #define PD_SIZE_STMT        0x00000000    /*  5.50 X  8.50 in. */
  169. #define PD_SIZE_EXEC        0x00000001    /*  7.50 X 10.00 in. */
  170. #define PD_SIZE_ASM        0x00000031    /*  7.68 X 10.16 in. */
  171. #define PD_SIZE_LETTERSM    PD_SIZE_ASM
  172. #define PD_SIZE_A        0x00000002    /*  8.50 X 11.00 in. */
  173. #define PD_SIZE_LETTER        PD_SIZE_A
  174. #define PD_SIZE_LEGAL        0x00000012    /*  8.50 X 14.00 in. */
  175. #define PD_SIZE_B        0x00000004    /* 11.00 X 17.00 in. */
  176. #define PD_SIZE_TABLOID        PD_SIZE_B
  177. #define PD_SIZE_12X18        0x00000005    /* 12.00 X 18.00 in. */
  178. #define PD_SIZE_C        0x00000006    /* 17.00 X 22.00 in. */
  179. #define PD_SIZE_D        0x00000008    /* 22.00 X 34.00 in. */
  180. #define PD_SIZE_E        0x0000000A    /* 34.00 X 44.00 in. */
  181.  
  182. /*    Standard American - landscape */
  183.  
  184. #define PD_SIZE_MONARCH_LAND    0x000000A0    /*  7.50 X  3.87 in. */
  185. #define PD_SIZE_COM10_LAND    0x000000B0    /*  9.50 X  4.12 in. */
  186. #define PD_SIZE_STMT_LAND    0x00000080    /*  8.50 X  5.50 in. */
  187. #define PD_SIZE_EXEC_LAND    0x00000081    /* 10.00 X  7.50 in. */
  188. #define PD_SIZE_ASM_LAND    0x000000B1    /* 10.16 X  7.68 in. */
  189. #define PD_SIZE_LETTERSM_LAND    PD_SIZE_ASM_LAND
  190. #define PD_SIZE_A_LAND        0x00000082    /* 11.00 X  8.50 in. */
  191. #define PD_SIZE_LETTER_LAND    PD_SIZE_A_LAND
  192. #define PD_SIZE_LEGAL_LAND    0x00000092    /* 14.00 X  8.50 in. */
  193. #define PD_SIZE_B_LAND        0x00000084    /* 17.00 X 11.00 in. */
  194. #define PD_SIZE_LEDGER_LAND    PD_SIZE_B_LAND
  195. #define PD_SIZE_LEDGER        PD_SIZE_B_LAND
  196. #define PD_SIZE_12X18_LAND    0x00000085    /* 18.00 X 12.00 in. */
  197. #define PD_SIZE_C_LAND        0x00000086    /* 22.00 X 17.00 in. */
  198. #define PD_SIZE_D_LAND        0x00000088    /* 34.00 X 22.00 in. */
  199. #define PD_SIZE_E_LAND        0x0000008A    /* 44.00 X 34.00 in. */
  200.  
  201. /*    Standard Metric - portrait */
  202.  
  203. #define PD_SIZE_A10        0x00000060    /*   26 X   37 mm */
  204. #define PD_SIZE_A9        0x00000062    /*   37 X   52 mm */
  205. #define PD_SIZE_A8        0x00000064    /*   52 X   74 mm */
  206. #define PD_SIZE_A7        0x00000066    /*   74 X  105 mm */
  207. #define PD_SIZE_A6        0x00000068    /*  105 X  148 mm */
  208. #define PD_SIZE_A5        0x00000040    /*  148 X  210 mm */
  209. #define PD_SIZE_A4        0x00000042    /*  210 X  297 mm */
  210. #define PD_SIZE_A4SP        0x00000052    /*  210 X  356 mm */
  211. #define PD_SIZE_A3        0x00000044    /*  297 X  420 mm */
  212. #define PD_SIZE_A2        0x00000046    /*  420 X  594 mm */
  213. #define PD_SIZE_A1        0x00000048    /*  594 X  841 mm */
  214. #define PD_SIZE_A0        0x0000004A    /*  841 X 1189 mm */
  215.  
  216. #define PD_SIZE_B10        0x00000061    /*   31 X   44 mm */
  217. #define PD_SIZE_B9        0x00000063    /*   44 X   62 mm */
  218. #define PD_SIZE_B8        0x00000065    /*   62 X   88 mm */
  219. #define PD_SIZE_B7        0x00000067    /*   88 X  125 mm */
  220. #define PD_SIZE_B6        0x00000069    /*  125 X  176 mm */
  221. #define PD_SIZE_B5        0x00000041    /*  176 X  250 mm */
  222. #define PD_SIZE_B4        0x00000043    /*  250 X  353 mm */
  223. #define PD_SIZE_B3        0x00000045    /*  353 X  500 mm */
  224. #define PD_SIZE_B2        0x00000047    /*  500 X  707 mm */
  225. #define PD_SIZE_B1        0x00000049    /*  707 X 1000 mm */
  226. #define PD_SIZE_B0        0x0000004B    /* 1000 X 1414 mm */
  227.  
  228. #define PD_SIZE_DL        0x00000070    /*  110 X  220 mm */
  229. #define PD_SIZE_C7        0x00000072    /*   81 X  114 mm */
  230. #define PD_SIZE_C76        0x00000073    /*   81 X  162 mm */
  231. #define PD_SIZE_C6        0x00000074    /*  114 X  162 mm */
  232. #define PD_SIZE_C5        0x00000075    /*  162 X  229 mm */
  233. #define PD_SIZE_C4        0x00000076    /*  229 X  324 mm */
  234. #define PD_SIZE_C3        0x00000077    /*  324 X  458 mm */
  235. #define PD_SIZE_C2        0x00000078    /*  458 X  648 mm */
  236. #define PD_SIZE_C1        0x00000079    /*  648 X  917 mm */
  237. #define PD_SIZE_C0        0x0000007A    /*  917 X 1297 mm */
  238.  
  239. /*    Standard Metric - landscape */
  240.  
  241. #define PD_SIZE_A10_LAND    0x000000E0    /*   37 X   26 mm */
  242. #define PD_SIZE_A9_LAND        0x000000E2    /*   52 X   37 mm */
  243. #define PD_SIZE_A8_LAND        0x000000E4    /*   74 X   52 mm */
  244. #define PD_SIZE_A7_LAND        0x000000E6    /*  105 X   74 mm */
  245. #define PD_SIZE_A6_LAND        0x000000E8    /*  148 X  105 mm */
  246. #define PD_SIZE_A5_LAND        0x000000C0    /*  210 X  148 mm */
  247. #define PD_SIZE_A4_LAND        0x000000C2    /*  297 X  210 mm */
  248. #define PD_SIZE_A4SP_LAND    0x000000D2    /*  356 X  210 mm */
  249. #define PD_SIZE_A3_LAND        0x000000C4    /*  420 X  297 mm */
  250. #define PD_SIZE_A2_LAND        0x000000C6    /*  594 X  420 mm */
  251. #define PD_SIZE_A1_LAND        0x000000C8    /*  841 X  594 mm */
  252. #define PD_SIZE_A0_LAND        0x000000CA    /* 1189 X  841 mm */
  253.  
  254. #define PD_SIZE_B10_LAND    0x000000E1    /*   44 X   31 mm */
  255. #define PD_SIZE_B9_LAND        0x000000E3    /*   62 X   44 mm */
  256. #define PD_SIZE_B8_LAND        0x000000E5    /*   88 X   62 mm */
  257. #define PD_SIZE_B7_LAND        0x000000E7    /*  125 X   88 mm */
  258. #define PD_SIZE_B6_LAND        0x000000E9    /*  176 X  125 mm */
  259. #define PD_SIZE_B5_LAND        0x000000C1    /*  250 X  176 mm */
  260. #define PD_SIZE_B4_LAND        0x000000C3    /*  353 X  250 mm */
  261. #define PD_SIZE_B3_LAND        0x000000C5    /*  500 X  353 mm */
  262. #define PD_SIZE_B2_LAND        0x000000C7    /*  707 X  500 mm */
  263. #define PD_SIZE_B1_LAND        0x000000C9    /* 1000 X  707 mm */
  264. #define PD_SIZE_B0_LAND        0x000000CB    /* 1414 X 1000 mm */
  265.  
  266. #define PD_SIZE_DL_LAND        0x000000F0    /*  220 X  110 mm */
  267. #define PD_SIZE_C7_LAND        0x000000F2    /*  114 X   81 mm */
  268. #define PD_SIZE_C76_LAND    0x000000F3    /*  162 X   81 mm */
  269. #define PD_SIZE_C6_LAND        0x000000F4    /*  162 X  114 mm */
  270. #define PD_SIZE_C5_LAND        0x000000F5    /*  229 X  162 mm */
  271. #define PD_SIZE_C4_LAND        0x000000F6    /*  324 X  229 mm */
  272. #define PD_SIZE_C3_LAND        0x000000F7    /*  458 X  324 mm */
  273. #define PD_SIZE_C2_LAND        0x000000F8    /*  648 X  458 mm */
  274. #define PD_SIZE_C1_LAND        0x000000F9    /*  917 X  648 mm */
  275. #define PD_SIZE_C0_LAND        0x000000FA    /* 1297 X  917 mm */
  276.  
  277. /* Printer status message codes (PDMessageStruct: message_code field) */
  278. /*    Note that these are NOT PDerrno error codes. The message
  279.     corresponding to each code can be found in the file
  280.     /usr/impressario/doc/PDMessages.inc.
  281. */
  282.  
  283. /*    Message code type masks */
  284. /*        Note that if a message is not a warning or error, it
  285.         is informational
  286. */
  287.  
  288. #define PD_MSG_MASK_VERSION        0x00010000
  289. #define PD_MSG_MASK_WARNING        0x01000000
  290. #define PD_MSG_MASK_ERROR        0x02000000
  291.  
  292. /*    Information codes */
  293.  
  294. #define PD_INFO_JOB_START        0x00000010
  295. #define PD_INFO_JOB_END            0x00000011
  296.  
  297. /*    Warning codes */
  298.  
  299. #define PD_WARN_MANUAL_FEED        0x01080101
  300. #define PD_WARN_REQ_PAPER        0x01080102
  301. #define PD_WARN_REQ_TRANSPARENCY    0x01080103
  302. #define PD_WARN_INK_LOW            0x01080200
  303.  
  304. /*    Error codes */
  305.  
  306. #define PD_ERROR_WAIT            0x02010000
  307. #define PD_ERROR_WARMING_UP        0x02010100
  308. #define PD_ERROR_SELF_TEST        0x02010200
  309. #define PD_ERROR_MAINTENANCE        0x02010201
  310. #define PD_ERROR_RESETTING        0x02010400
  311. #define PD_ERROR_MEDIA_MOVEMENT        0x02010800
  312. #define PD_ERROR_TIMEOUT        0x02011000
  313.  
  314. #define PD_ERROR_OFFLINE        0x02020000
  315. #define PD_ERROR_DESELECTED        0x02020100
  316. #define PD_ERROR_COVER_OPEN        0x02020200
  317. #define PD_ERROR_DOOR_OPEN        0x02020201
  318.  
  319. #define PD_ERROR_MEDIA_JAM        0x02040000
  320. #define PD_ERROR_PAPER_JAM        0x02040100
  321. #define PD_ERROR_PAPER_ENTRY_JAM    0x02040101
  322. #define PD_ERROR_PAPER_PATH_JAM        0x02040102
  323. #define PD_ERROR_PAPER_EXIT_JAM        0x02040180
  324. #define PD_ERROR_TRANSFER_JAM        0x02040200
  325.  
  326. #define PD_ERROR_MEDIA_OUT        0x02080000
  327. #define PD_ERROR_PAPER_OUT        0x02080100
  328. #define PD_ERROR_INK_OUT        0x02080200
  329. #define PD_ERROR_TRANSFER_OUT        0x02080201
  330. #define PD_ERROR_TONER_OUT        0x02080202
  331. #define PD_ERROR_FUSER_OUT        0x02080400
  332. #define PD_ERROR_DRUM_OUT        0x02080800
  333. #define PD_ERROR_CLEANER_OUT        0x02081000
  334. #define PD_ERROR_FLUID_OUT        0x02081001
  335.  
  336. #define PD_ERROR_OTHER_FAULT        0x02100000
  337. #define PD_ERROR_OUTPUT_TRAY_FULL    0x02100100
  338. #define PD_ERROR_WASTE_BIN_FULL        0x02100200
  339. #define PD_ERROR_NO_PAPER_TRAY        0x02100300
  340.  
  341. #define PD_ERROR_NOT_RESPONDING        0x02400000
  342. #define PD_ERROR_POWER_OFF        0x02400100
  343. #define PD_ERROR_NOT_CONNECTED        0x02400200
  344. #define PD_ERROR_REPORTS_BUSY        0x02400400
  345. #define PD_ERROR_NO_ACKNOWLEDGE        0x02400800
  346.  
  347. #define PD_ERROR_SERVICE_CALL        0x02800000
  348. #define PD_ERROR_HOST_IF_FAILURE    0x02800100
  349. #define PD_ERROR_PRINTER_IF_FAILURE    0x02800200
  350. #define PD_ERROR_REPORTS_FAILURE    0x02800400
  351.  
  352.  
  353. /* Library execution error codes (PDerrno) - indices into PDerrlist array */
  354.  
  355. #define PD_LIB_ERROR        -1    /* Indicates an error has occurred */
  356.  
  357. #define PD_LIB_NOERROR        0    /* No error detected */
  358. #define PD_LIBERR_BAD_STRUCT    1    /* Invalid or NULL struct */
  359. #define PD_LIBERR_BAD_MSG    2    /* Invalid message code */
  360. #define PD_LIBERR_BAD_PNAME    3    /* Invalid printer name */
  361. #define PD_LIBERR_STATUS_READ    4    /* Could not open/read status file */
  362. #define PD_LIBERR_STATUS_WRITE    5    /* Could not open/write status file */
  363. #define PD_LIBERR_CONFIG_READ    6    /* Could not open/read config file */
  364. #define PD_LIBERR_NO_PRINTER    7    /* Printer not known to system */
  365. #define PD_LIBERR_BAD_HOSTNAME    8    /* Invalid remote printer hostname */
  366. #define PD_LIBERR_NETWORK    9    /* Unspecified network comm. problem */
  367. #define PD_LIBERR_NET_TIMEOUT    10    /* Timeout trying to connect to host */
  368. #define PD_LIBERR_NET_INTR    11    /* Interrupted while connectng */
  369. #define PD_LIBERR_NET_NOTREG    12    /* podd deamon not registered with */
  370.                     /* inetd on remote host */
  371. #define PD_LIBERR_NET_PMAP    13    /* port mapper deamon failed on host */
  372. #define PD_LIBERR_NET_NOPROC    14    /* new libpod function not supported */
  373.                     /* by podd on remote host */
  374. #define PD_LIBERR_NET_CLNTXDR    15    /* libpod and the kernel are */
  375.                     /* mismatched - XDR differs */
  376. #define PD_LIBERR_NET_SVCXDR    16    /* podd and the remote kernel are */
  377.                     /* mismatched - XDR differs */
  378. #define PD_LIBERR_NET_RPCMATCH    17    /* local and remote RPC software */
  379.                     /* versions are incompatible */
  380. #define PD_LIBERR_NET_PROCMATCH    18    /* local and remote libpod software */
  381.                     /* versions are incompatible */
  382. #define PD_LIBERR_MAX_MESSAGE    19    /* Too many messages to write */
  383. #define PD_LIBERR_LOG_WRITE    20    /* Could not open/write log file */
  384. #define PD_LIBERR_BAD_NENTRIES    21    /* Invalid number of log entries */
  385. #define PD_LIBERR_LOG_READ    22    /* Could not open/read log file */
  386. #define PD_LIBERR_BAD_MSGCNT    23    /* Invalid number of messages */
  387. #define PD_LIBERR_CONFIG_WRITE    24    /* Could not open/write config file */
  388. #define PD_LIBERR_NO_PAGESIZE    25    /* Page size for size code not found */
  389. #define PD_LIBERR_BAD_SIZENAME    26    /* NULL page size name */
  390. #define PD_LIBERR_NO_PAGECODE    27    /* Page size code for name not found */
  391.  
  392.  
  393. /* POD message structure */
  394.  
  395. typedef struct _pdMessageStruct {
  396.     int             message_code;
  397.     char            message_text[PD_STR_MAX];
  398. } PDMessageStruct;
  399.  
  400.  
  401. /* POD media size table structure */
  402.  
  403. typedef struct _pdSizeTableStruct {
  404.     int             media_size;
  405.     int             horizontal_addr;
  406.     int             vertical_addr;
  407.     float           width;
  408.     float           length;
  409.     float           left_margin;
  410.     float           top_margin;
  411.     char            raster_definition;
  412.     char            validation_mask;
  413.     char            variable_page_size;
  414. } PDSizeTableStruct;
  415.  
  416.  
  417. /* POD Status file structure */
  418.  
  419. typedef struct _pdStatusStruct {
  420.     int             operational_status;
  421.     int             error_count;
  422.     int             media_type;
  423.     int             number_of_colors;
  424.     int             media_size;
  425.     char            printer_options[PD_STR_MAX];
  426.     char            validation_mask;
  427. } PDStatusStruct;
  428.  
  429.  
  430. /* POD Config file structure */
  431.  
  432. typedef struct _pdInfoStruct {
  433.     char            printer_class[PD_STR_MAX];
  434.     char            printer_model[PD_STR_MAX];
  435.     char            printer_options[PD_STR_MAX];
  436.     char            location_code[PD_STR_MAX];
  437.     char            physical_location[PD_STR_MAX];
  438.     char            technology[PD_STR_MAX];
  439.     char            config_path[PD_STR_MAX];
  440.     char            driver_path[PD_STR_MAX];
  441.     char            port_path[PD_STR_MAX];
  442.     char            active_path[PD_STR_MAX];
  443.     int             error_retry_wait;
  444.     int             status_update_wait;
  445.     int             media_wait;
  446.     int             horizontal_resolution;
  447.     int             vertical_resolution;
  448.     float           cost_per_page;
  449.     int             avg_time_per_page;
  450.     int             max_time_per_page;
  451.     int             min_number_of_colors;
  452.     int             max_number_of_colors;
  453.     float           min_area_horizontal;
  454.     float           min_area_vertical;
  455.     float           max_area_horizontal;
  456.     float           max_area_vertical;
  457.     int             min_addr_horizontal;
  458.     int             min_addr_vertical;
  459.     int             max_addr_horizontal;
  460.     int             max_addr_vertical;
  461.     int             quality_modes;
  462.     char          **quality_mode_names;
  463.     int             default_quality_mode;
  464.     int             manual_capable;
  465.     int             black_substitute;
  466.     int             media_standard;
  467.     int             avail_fonts;
  468.     char          **avail_fonts_names;
  469.     int             input_sources;
  470.     char          **input_sources_names;
  471.     int             default_input_source;
  472.     float           input_source_gamma;
  473.     int             color_adjustment;
  474.     char          **color_adj_names;
  475.     int             default_color_adj;
  476.     int             media_types;
  477.     char          **media_types_names;
  478.     int             default_media_type;
  479.     int             size_table_entries;
  480.     PDSizeTableStruct    *size_table;
  481.     PDStatusStruct    *active_status;
  482.     PDMessageStruct    *error_status;
  483. } PDInfoStruct;
  484.  
  485.  
  486. /* POD Log file structure */
  487. /*    This structure describes a log file entry. The following
  488.     notes apply:
  489.  
  490.     1. The job_id field may be NULL if no job ID was available
  491.        for the log entry.
  492.  
  493.     2. The username field may be NULL if it was available for
  494.        the log entry.
  495.  
  496.     3. The time_stamp is expressed in seconds as per time(2).
  497. */
  498.  
  499. typedef struct _pdLogStruct {
  500.     time_t time_stamp;        /* Log entry time stamp from time(2) */
  501.     char *job_id;        /* Print job ID */
  502.     char *username;        /* Print job owner's user name */
  503.     PDMessageStruct entry;    /* Log entry */
  504. } PDLogStruct;
  505.  
  506.  
  507. /* Public global variables */
  508.  
  509. extern char    *PDpod_path;    /* Path to the POD files */
  510. extern int    PDdebug;    /* Debug flag. Set non-zero for runtime info */
  511. extern long    PDnet_timeout;    /* Network communication timeout (seconds) */
  512. extern int    PDerrno;    /* Error variable */
  513. extern char    *PDerrlist[];    /* Error strings */
  514. extern int    PDnerr;        /* Number of error strings in SLerrlist */
  515.  
  516.  
  517. /* Public function declarations */
  518.  
  519. #ifdef __cplusplus
  520. extern "C" {
  521. #endif
  522. extern void    PDPerror(const char*);
  523. extern char*    PDErrorString(int errCode);
  524. extern int    PDMakeMessage(PDMessageStruct*, int);
  525. extern PDSizeTableStruct*    PDFindPageSize(PDInfoStruct*, int);
  526. extern int    PDGetSizeCodeByName(char*);
  527. extern char*    PDGetNameBySizeCode(int);
  528. extern int    PDGetCurrentResolution(PDInfoStruct*, int*, int*);
  529. extern int    PDReadInfo(const char*, PDInfoStruct**, time_t*);
  530. extern int    PDLocalReadInfo(const char*, PDInfoStruct**, time_t*);
  531. extern int    PDLocalWriteInfo(const char*, PDInfoStruct*);
  532. extern int    PDReadLog(const char*, int, PDLogStruct**, time_t*);
  533. extern int    PDLocalReadLog(const char*, int, PDLogStruct**, time_t*);
  534. extern int    PDLocalWriteLog(const char*, const char*, const char*,
  535.                         PDMessageStruct*);
  536. extern int    PDReadStatus(const char*, PDStatusStruct**,
  537.                         PDMessageStruct**, time_t*);
  538. extern int    PDLocalReadStatus(const char*, PDStatusStruct**,
  539.                         PDMessageStruct**, time_t*);
  540. extern int    PDReadOpStatus(const char*, int*, time_t*);
  541. extern int    PDLocalReadOpStatus(const char*, int*, time_t*);
  542. extern int    PDLocalWriteStatus(const char*, PDStatusStruct*,
  543.                             PDMessageStruct*);
  544. #ifdef __cplusplus
  545. }
  546. #endif
  547.  
  548.  
  549. #endif    /* _PD_POD_H */
  550.